home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 1.iso
/
ARGONET
/
PD
/
PROGRAMMING
/
DESKLIBC
/
SOURCES.ZIP
/
DeskLib
/
!DLSources
/
Libraries
/
Misc
/
DLL
/
l
/
Screen
Wrap
Text File
|
1995-04-15
|
33KB
|
1,652 lines
1
16
16
16
16
16
16
16
16
16
16
16
16
16
16
16
17
2
3
4
5
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 typedef struct
17 {
18 int errnum;
19 char errmess[252];
20 } os_error;
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
8
8
8
8
8
8
8
9
10
11
12
13
14
15
17
18
19
1 ___toplevel
1
2
3
7
7
7
7
8
9
10
11
12
13 typedef unsigned int size_t;
14
15
16 typedef struct {
17 int r[10];
18 } _kernel_swi_regs;
19
20 typedef struct {
21 int load, exec;
22 int start, end;
23 } _kernel_osfile_block;
24
25 typedef struct {
26 void * dataptr;
27 int nbytes, fileptr;
28 int buf_len;
29 char * wild_fld;
30 } _kernel_osgbpb_block;
31
32 typedef struct {
33 int errnum;
34 char errmess[252];
35 } _kernel_oserror;
36
37 typedef struct stack_chunk {
38 unsigned long sc_mark;
39 struct stack_chunk *sc_next, *sc_prev;
40 unsigned long sc_size;
41 int (*sc_deallocate)();
42 } _kernel_stack_chunk;
43
44 extern _kernel_stack_chunk *_kernel_current_stack_chunk(void);
45
46 extern void _kernel_setreturncode(unsigned code);
47
48 extern void _kernel_exit(int);
49
50 extern void _kernel_raise_error(_kernel_oserror *);
51
52
53 extern void _kernel_exittraphandler(void);
54
55
56
57
58
59
60
61
62
63
64
65
66 extern int _kernel_hostos(void);
67
70
70
70
71 extern int _kernel_fpavailable(void);
72
75
75
75
76
77 extern _kernel_oserror *_kernel_swi(int no, _kernel_swi_regs *in,
78 _kernel_swi_regs *out);
79
85
85
85
85
85
85
86 extern _kernel_oserror *_kernel_swi_c(int no, _kernel_swi_regs *in,
87 _kernel_swi_regs *out, int *carry);
88
93
93
93
93
93
94 extern char *_kernel_command_string(void);
95
98
98
98
99
108
108
108
108
108
108
108
108
108
109
110
111 extern int _kernel_osbyte(int op, int x, int y);
112
122
122
122
122
122
122
122
122
122
122
123 extern int _kernel_osrdch(void);
124
127
127
127
128 extern int _kernel_oswrch(int ch);
129
133
133
133
133
134 extern int _kernel_osbget(unsigned handle);
135
139
139
139
139
140 extern int _kernel_osbput(int ch, unsigned handle);
141
145
145
145
145
146 extern int _kernel_osgbpb(int op, unsigned handle, _kernel_osgbpb_block *inout);
153
153
153
153
153
153
153
154 extern int _kernel_osword(int op, int *data);
155
160
160
160
160
160
161 extern int _kernel_osfind(int op, char *name);
162
167
167
167
167
167
168 extern int _kernel_osfile(int op, const char *name, _kernel_osfile_block *inout);
169
173
173
173
173
174 extern int _kernel_osargs(int op, unsigned handle, int arg);
175
181
181
181
181
181
181
182 extern int _kernel_oscli(const char *s);
183
191
191
191
191
191
191
191
191
192 extern _kernel_oserror *_kernel_last_oserror(void);
193
202
202
202
202
202
202
202
202
202
203 extern _kernel_oserror *_kernel_getenv(const char *name, char *buffer, unsigned size);
204
209
209
209
209
209
210 extern _kernel_oserror *_kernel_setenv(const char *name, const char *value);
211
215
215
215
215
216 extern int _kernel_system(const char *string, int chain);
217
232
232
232
232
232
232
232
232
232
232
232
232
232
232
232
233
234 extern unsigned _kernel_alloc(unsigned minwords, void **block);
235
242
242
242
242
242
242
242
243 typedef void freeproc(void *);
244 typedef void * allocproc(unsigned);
245
246 extern void _kernel_register_allocs(allocproc *malloc, freeproc *free);
247
254
254
254
254
254
254
254
255 typedef int _kernel_ExtendProc(int , void** );
256 extern _kernel_ExtendProc *_kernel_register_slotextend(_kernel_ExtendProc *proc);
257
264
264
264
264
264
264
264
265 extern int _kernel_escape_seen(void);
266
273
273
273
273
273
273
273
274 typedef union {
275 struct {int s:1, u:16, x: 15; unsigned mhi, mlo; } i;
276 int w[3]; } _extended_fp_number;
277
278 typedef struct {
279 int r4, r5, r6, r7, r8, r9;
280 int fp, sp, pc, sl;
281 _extended_fp_number f4, f5, f6, f7; } _kernel_unwindblock;
282
283 extern int _kernel_unwind(_kernel_unwindblock *inout, char **language);
284
296
296
296
296
296
296
296
296
296
296
296
296
297 extern char *_kernel_procname(int pc);
298
302
302
302
302
303 extern char *_kernel_language(int pc);
304
308
308
308
308
309
319
319
319
319
319
319
319
319
319
319
320 extern unsigned _kernel_udiv(unsigned divisor, unsigned dividend);
321 extern unsigned _kernel_urem(unsigned divisor, unsigned dividend);
322 extern unsigned _kernel_udiv10(unsigned dividend);
323
324 extern int _kernel_sdiv(int divisor, int dividend);
325 extern int _kernel_srem(int divisor, int dividend);
326 extern int _kernel_sdiv10(int dividend);
327
328
331
331
331
332 typedef enum { NotHandled, Handled } _kernel_HandledOrNot;
333
334 typedef struct {
335 int regs [16];
336 } _kernel_registerset;
337
338 typedef struct {
339 int regs [10];
340 } _kernel_eventregisters;
341
342 typedef void (*PROC) (void);
343 typedef _kernel_HandledOrNot (*_kernel_trapproc) (int code, _kernel_registerset *regs);
344 typedef _kernel_HandledOrNot (*_kernel_eventproc) (int code, _kernel_registerset *regs);
345
346 typedef struct {
347 int size;
348 int codestart, codeend;
349 char *name;
350 PROC (*InitProc)(void);
351 PROC FinaliseProc;
352 _kernel_trapproc TrapProc;
353 _kernel_trapproc UncaughtTrapProc;
354 _kernel_eventproc EventProc;
355 _kernel_eventproc UnhandledEventProc;
356 void (*FastEventProc) (_kernel_eventregisters *);
357 int (*UnwindProc) (_kernel_unwindblock *inout, char **language);
358 char * (*NameProc) (int pc);
359 } _kernel_languagedescription;
360
361 typedef int _kernel_ccproc(int, int, int);
362
363 extern int _kernel_call_client(int a1, int a2, int a3, _kernel_ccproc callee);
364
369
369
369
369
369
370 extern int _kernel_client_is_module(void);
371
375
375
375
375
376 extern int _kernel_processor_mode(void);
377
378 extern void _kernel_irqs_on(void);
379
380 extern void _kernel_irqs_off(void);
381
382 extern int _kernel_irqs_disabled(void);
383
384
385 extern void *_kernel_RMAalloc(size_t size);
386
387 extern void *_kernel_RMAextend(void *p, size_t size);
388
389 extern void _kernel_RMAfree(void *p);
390
391
392
393
21
22
23
25
26
27
28 typedef void *dll;
29
30 typedef struct
31 {
32 char *name;
33 int version;
34 char *entryNames;
35 void *branchTable;
36 }
37 dll_table;
38
39 typedef struct
40 {
41 dll d;
42 char *name;
43 int version;
44 char *author;
45 unsigned instSize;
46 }
47 dll_infostr;
48
49
67
67
67
67
67
67
67
67
67
67
67
67
67
67
67
67
67
67
68 os_error *dll_find(const char *name,int version,dll *d);
69 os_error *dll_findFromTable(const dll_table *table,int entries);
70 os_error *dll_load(void *buffer,const char *name);
71 os_error *dll_lose(dll d);
72 os_error *dll_appDying(void);
73 os_error *dll_giveCLibData(void *data);
74 os_error *dll_findCLibData(void **p);
75 os_error *dll_instanceVars(void *buffer,int *size,int *magic);
76 os_error *dll_setInstanceVars(dll d,void *workspace);
77 os_error *dll_appData(void);
78 os_error *dll_readStackPtr(int *sp);
79 os_error *dll_setStackPtr(int sp);
80 os_error *dll_nameApp(const char *name);
81 os_error *dll_info(dll d,dll_infostr *i);
82 os_error *dll_findEntry(dll d,const char *name,void (**entry)());
83 os_error *dll_saveHandle(int *handle);
84 os_error *dll_restoreHandle(int *handle);
85 os_error *dll_findInstanceVars(dll d,void **addr);
86 os_error *dll_registerAppEntryTable(void (**btable)(),char *names);
87 os_error *dll_findAppEntry(char *name,void (**func)());
88 os_error *dll_setExtensionTable(void (**btable)(),char *names);
89
90
91
92
93
94
95
96
97
98 void _dll_appspace(void);
99 void _dll_clibdata(void);
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114 int _dll_system(const char *command);
115 int _dll_ksystem(const char *command,int chain);
116 os_error *_dll_oscli(const char *command);
117 os_error *_dll_starttask(const char *command);
118
119
120
121
122
123
124
125
126
127
128
129
130 dll _dll_loadExtension(const char *name);
131 void _dll_freeExtension(dll d);
132
133
134
135
136
137 int _dll_setjmp(void);
138 void _dll_longjmped(int sp);
139
140
141
142
143
144
145
146
147
148
149
150
151 void _dll_giveMemory(void);
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
45
46
47
48
49
50
51
52
53
7
8 typedef struct
9 {
10 int x, y;
11 } wimp_point;
12 typedef wimp_point wimp_coord;
13 typedef struct
14 {
15 wimp_point min;
16 wimp_point max;
17 } wimp_rect;
18 typedef wimp_rect wimp_box;
19 typedef int window_handle;
20 typedef int icon_handle;
21 typedef int task_handle;
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 typedef union
42 {
43 int value;
44 struct
45 {
46 unsigned int wimpcolour : 4;
47 unsigned int gcolaction : 3;
48 unsigned int foreback : 1;
49 unsigned int padding : 24;
50 } data;
51 } wimp_colour;
52 typedef union
53 {
54 int value;
55 struct
56 {
57 char gcol;
58 char red;
59 char green;
60 char blue;
61 } data;
62 } palette_entry;
63 typedef struct
64 {
65 palette_entry colour[16];
66 palette_entry border;
67 palette_entry mouse1;
68 palette_entry mouse2;
69 palette_entry mouse3;
70 } palette_block;
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118 typedef union
119 {
120 unsigned int value;
121 struct
122 {
123 unsigned int garbage1 : 6;
124 unsigned int font : 1;
125 unsigned int garbage2 : 17;
126 unsigned int handle : 8;
127 } font;
128 struct
129 {
130 unsigned int text : 1;
131 unsigned int sprite : 1;
132 unsigned int border : 1;
133 unsigned int hcentre : 1;
134 unsigned int vcentre : 1;
135 unsigned int filled : 1;
136 unsigned int font : 1;
137 unsigned int needshelp : 1;
138 unsigned int indirected : 1;
139 unsigned int rightjustify : 1;
140 unsigned int allowadjust : 1;
141 unsigned int halfsize : 1;
142 unsigned int buttontype : 4;
143 unsigned int esg : 5;
144 unsigned int selected : 1;
145 unsigned int shaded : 1;
146 unsigned int deleted : 1;
147 unsigned int foreground : 4;
148 unsigned int background : 4;
149 } data;
150 } icon_flags;
151 typedef struct
152 {
153 char *buffer;
154 char *validstring;
155 unsigned int bufflen;
156 } icon_indtext;
157 typedef struct
158 {
159 const char *name;
160 void *spritearea;
161 unsigned int nameisname;
162 } icon_indsprite;
163 typedef union
164 {
165 char text[ 12 ];
166 icon_indtext indirecttext;
167 char spritename[ 12 ];
168 icon_indsprite indirectsprite;
169 } icon_data;
170 typedef struct
171 {
172 wimp_box workarearect;
173 icon_flags flags;
174 icon_data data;
175 } icon_block;
176 typedef struct
177 {
178 window_handle window;
179 icon_block icondata;
180 } icon_createblock;
181 typedef union
182 {
183 struct
184 {
185 unsigned int hastitle : 1;
186 unsigned int moveable : 1;
187 unsigned int hasvscroll : 1;
188 unsigned int hashscroll : 1;
189 unsigned int autoredraw : 1;
190 unsigned int pane : 1;
191 unsigned int nobounds : 1;
192 unsigned int nobackclose : 1;
193 unsigned int scrollrq : 1;
194 unsigned int scrollrqdebounced : 1;
195 unsigned int realcolours : 1;
196 unsigned int backwindow : 1;
197 unsigned int hotkeys : 1;
198 unsigned int keeponscreen : 1;
199 unsigned int ignoreright : 1;
200 unsigned int ignorebottom : 1;
201 unsigned int open : 1;
202 unsigned int top : 1;
203 unsigned int fullsize : 1;
204 unsigned int istoggling : 1;
205 unsigned int focus : 1;
206 unsigned int forceonce : 1;
207 unsigned int dummy22 : 1;
208 unsigned int dummy23 : 1;
209 unsigned int backicon : 1;
210 unsigned int closeicon : 1;
211 unsigned int titlebar : 1;
212 unsigned int toggleicon : 1;
213 unsigned int vscroll : 1;
214 unsigned int adjusticon : 1;
215 unsigned int hscroll : 1;
216 unsigned int newflags : 1;
217 } data;
218 int value;
219 } window_flags;
220 typedef struct
221 {
222 int x : 16;
223 int y : 16;
224 } window_minsize;
225 typedef enum
226 {
227 windowcol_TITLEFORE = 0,
228 windowcol_TITLEBACK,
229 windowcol_WORKFORE,
230 windowcol_WORKBACK,
231 windowcol_SCROLLBACK,
232 windowcol_SCROLLFORE,
233 windowcol_TITLEHILITE
234 } window_colourindices;
235 typedef struct
236 {
237 wimp_box screenrect;
238 wimp_point scroll;
239 window_handle behind;
240 window_flags flags;
241 char colours[8];
242 wimp_box workarearect;
243 icon_flags titleflags;
244 icon_flags workflags;
245 void *spritearea;
246 window_minsize minsize;
247 icon_data title;
248 unsigned int numicons;
249 } window_block;
250 typedef struct
251 {
252 window_handle window;
253 wimp_box screenrect;
254 wimp_point scroll;
255 window_handle behind;
256 } window_openblock;
257 typedef struct
258 {
259 window_openblock openblock;
260 window_flags flags;
261 } window_state;
262 typedef struct
263 {
264 window_handle window;
265 window_block block;
266 } window_info;
267 typedef struct
268 {
269 window_handle window;
270 wimp_box rect;
271 wimp_point scroll;
272 wimp_box cliprect;
273 } window_redrawblock;
274 typedef struct
275 {
276 window_handle window;
277 wimp_box screenrect;
278 } window_outline;
279
280
281
282
283
284
285
286 typedef union
287 {
288 unsigned int value;
289 struct
290 {
291 unsigned int adjust : 1;
292 unsigned int menu : 1;
293 unsigned int select : 1;
294 unsigned int dummy3 : 1;
295 unsigned int dragadjust : 1;
296 unsigned int dummy5 : 1;
297 unsigned int dragselect : 1;
298 unsigned int dummy7 : 1;
299 unsigned int clickadjust : 1;
300 unsigned int dummy9 : 1;
301 unsigned int clickselect : 1;
302 } data;
303 } button_state;
304 typedef struct
305 {
306 wimp_point pos;
307 button_state button;
308 window_handle window;
309 icon_handle icon;
310 } mouse_block;
311 typedef struct
312 {
313 int shapenumber;
314 char *shapedata;
315 unsigned int width;
316 unsigned int height;
317 wimp_point active;
318 } pointer_shapeblock;
319 typedef enum
320 {
321 drag_MOVEWINDOW = 1,
322 drag_RESIZEWINDOW,
323 drag_SCROLLX,
324 drag_SCROLLY,
325 drag_FIXEDBOX,
326 drag_RUBBERBOX,
327 drag_INVISIBLE,
328 drag_USERFIXEDBBOX,
329 drag_USERRUBBERBOX,
330 drag_USERFIXEDNC,
331 drag_USERRUBBERNC
332 } drag_type;
333 typedef struct
334 {
335 window_handle window;
336 drag_type type;
337 wimp_box screenrect;
338 wimp_box parent;
339 } drag_block;
340 typedef union
341 {
342 unsigned int value;
343 struct
344 {
345 unsigned int ok : 1;
346 unsigned int cancel : 1;
347 unsigned int highlightcancel : 1;
348 unsigned int noprompt : 1;
349 unsigned int noprefix : 1;
350 unsigned int nowait : 1;
351 unsigned int closebox : 1;
352 } data;
353 } error_flags;
354 typedef struct menu_block *menu_ptr;
355 typedef union
356 {
357 unsigned int value;
358 struct
359 {
360 unsigned int ticked : 1;
361 unsigned int dotted : 1;
362 unsigned int writable : 1;
363 unsigned int notifysub : 1;
364 unsigned int openshaded : 1;
365 unsigned int dummy2 : 2;
366 unsigned int last : 1;
367 unsigned int indtitle : 1;
368 unsigned int dummy13 : 13;
369 unsigned int shaded : 1;
370 unsigned int dummy1 : 1;
371 unsigned int foreground : 4;
372 unsigned int background : 4;
373 } data;
374 } menu_flags;
375 typedef union
376 {
377 menu_ptr menu;
378 window_handle window;
379 int value;
380 } menu_submenu;
381 typedef struct
382 {
383 menu_flags menuflags;
384 menu_submenu submenu;
385 icon_flags iconflags;
386 icon_data icondata;
387 } menu_item;
388 typedef struct menu_block
389 {
390 char title [ 12 ];
391 char titlefore, titleback, workfore, workback;
392 unsigned int width;
393 unsigned int height;
394 unsigned int gap;
395 } menu_block;
396 typedef int key_press;
397 typedef struct
398 {
399 window_handle window;
400 icon_handle icon;
401 wimp_point offset;
402 int height;
403 int index;
404 } caret_block;
405 typedef struct
406 {
407 caret_block caret;
408 key_press code;
409 } key_block;
410 typedef struct
411 {
412 int address;
413 int contents;
414 } pollword_block;
415 typedef enum
416 {
417 message_QUIT = 0,
418 message_CLOSEDOWN = 0,
419 message_DATASAVE = 1,
420 message_DATASAVEACK = 2,
421 message_DATASAVEOK = 2,
422 message_DATALOAD = 3,
423 message_DATALOADACK = 4,
424 message_DATALOADOK = 4,
425 message_DATAOPEN,
426 message_RAMFETCH,
427 message_RAMTRANSMIT,
428 message_PREQUIT,
429 message_PALETTECHANGE,
430 message_SAVEDESK,
431 message_DEVICECLAIM,
432 message_DEVICEINUSE,
433 message_DATASAVED,
434 message_FILEROPENDIR = 0x400,
435 message_FILERCLOSEDIR,
436 message_HELPREQUEST = 0x502,
437 message_HELPREPLY,
438 message_NOTIFY = 0x40040,
439 message_MENUWARNING = 0x400C0,
440 message_MENUWARN = 0x400C0,
441 message_MODECHANGE,
442 message_TASKINITIALISE = 0x400C2,
443 message_INITTASK = 0x400C2,
444 message_TASKCLOSEDOWN = 0x400C3,
445 message_CLOSETASK = 0x400C3,
446 message_SLOTSIZE = 0x400C4,
447 message_SLOTCHANGE = 0x400C4,
448 message_SETSLOT = 0x400C5,
449 message_TASKNAMERQ,
450 message_TASKNAMEIS,
451 message_TASKSTARTED,
452 message_MENUSDELETED,
453 message_WINDOWINFO = 0x400CC,
454 message_POPUPRQ = 0x46D40,
455 message_POPUPREQUEST = 0x46D40,
456 message_POPUPSTATE,
457 message_POPUPCLOSED,
458 message_PRINTFILE = 0x80140,
459 message_WILLPRINT,
460 message_PRINTTYPEODD = 0x80145,
461 message_PRINTTYPEKNOWN,
462 message_PRINTERCHANGE
463 } message_action;
464 typedef int message_destinee;
465 typedef struct
466 {
467 unsigned int size;
468 task_handle sender;
469 unsigned int myref;
470 unsigned int yourref;
471 message_action action;
472 } message_header;
473 typedef struct
474 {
475 window_handle window;
476 icon_handle icon;
477 wimp_point pos;
478 int estsize;
479 int filetype;
480 char leafname[12];
481 } message_datasave;
482 typedef struct
483 {
484 window_handle window;
485 icon_handle icon;
486 wimp_point pos;
487 int estsize;
488 int filetype;
489 char filename[212];
490 } message_datasaveack;
491 typedef struct
492 {
493 window_handle window;
494 icon_handle icon;
495 wimp_point pos;
496 int size;
497 int filetype;
498 char filename[212];
499 } message_dataload;
500 typedef struct
501 {
502 window_handle window;
503 icon_handle icon;
504 wimp_point pos;
505 int size;
506 int filetype;
507 char filename[212];
508 } message_dataloadack;
509 typedef message_dataload message_dataopen;
510 typedef struct
511 {
512 char *buffer;
513 int buffsize;
514 } message_ramfetch;
515 typedef struct
516 {
517 char *buffer;
518 int byteswritten;
519 } message_ramtransmit;
520 typedef struct
521 {
522 mouse_block where;
523 } message_helprequest;
524 typedef struct
525 {
526 char text[200];
527 } message_helpreply;
528 typedef struct
529 {
530 int filler[5];
531 int filetype;
532 char filename[212];
533 } message_print;
534 typedef struct
535 {
536 int id;
537 wimp_point openpos;
538 int selection[10];
539 } message_menuwarn;
540 typedef struct
541 {
542 window_handle window;
543 task_handle task;
544 char title[20];
545 } message_iconize;
546 typedef struct
547 {
548 window_handle window;
549 int dummy;
550 char spritename[8];
551 char title[20];
552 } message_windowinfo;
553 typedef struct
554 {
555 message_header header;
556 union
557 {
558 char bytes [236];
559 int words [59];
560 message_datasave datasave;
561 message_datasaveack datasaveack;
562 message_dataload dataload;
563 message_dataopen dataopen;
564 message_ramfetch ramfetch;
565 message_ramtransmit ramtransmit;
566 message_helprequest helprequest;
567 message_helpreply helpreply;
568 message_print print;
569 message_menuwarn menuwarn;
570 message_iconize iconize;
571 message_windowinfo windowinfo;
572 0
573
573
574
575
576 } data;
577 } message_block;
578
579 typedef enum
580 {
581 event_ANY = -99,
582 event_NULL = 0,
583 event_REDRAW,
584 event_OPEN,
585 event_CLOSE,
586 event_PTRLEAVE,
587 event_PTRENTER,
588 event_CLICK = 6,
589 event_BUTTON = 6,
590 event_USERDRAG,
591 event_KEY,
592 event_MENU,
593 event_SCROLL,
594 event_LOSECARET,
595 event_GAINCARET,
596 event_NONZEROPOLLWORD,
597 event_USERMESSAGE = 17,
598 event_SEND = 17,
599 event_USERMESSAGERECORDED = 18,
600 event_SENDWANTACK = 18,
601 event_USERMESSAGEACK = 19,
602 event_ACK = 19
603 } event_type;
604 typedef union
605 {
606 unsigned int value;
607 struct
608 {
609 unsigned int null : 1;
610 unsigned int redraw : 1;
611 unsigned int open : 1;
612 unsigned int close : 1;
613 unsigned int ptrleave : 1;
614 unsigned int ptrenter : 1;
615 unsigned int click : 1;
616 unsigned int userdrag : 1;
617 unsigned int key : 1;
618 unsigned int menu : 1;
619 unsigned int scroll : 1;
620 unsigned int losecaret : 1;
621 unsigned int gaincaret : 1;
622 unsigned int nonzeropollword : 1;
623 unsigned int dummy14 : 1;
624 unsigned int dummy15 : 1;
625 unsigned int dummy16 : 1;
626 unsigned int usermessage : 1;
627 unsigned int usermessagerecorded : 1;
628 unsigned int usermessageack : 1;
629 unsigned int dummy20 : 1;
630 unsigned int dummy21 : 1;
631 unsigned int r3ispollwordptr : 1;
632 unsigned int highprioritypoll : 1;
633 unsigned int keepfpregisters : 1;
634 } data;
635 } event_pollmask;
636 typedef struct
637 {
638 window_openblock openblock;
639 wimp_point direction;
640 } scroll_rq;
641 typedef union
642 {
643 caret_block caret;
644 key_block key;
645 pollword_block pollword;
646 window_openblock openblock;
647 message_block message;
648 mouse_block mouse;
649 wimp_box screenrect;
650 int selection[10];
651 scroll_rq scroll;
652 char bytes [256];
653 int words [64];
654 } event_data;
655 typedef struct
656 {
657 event_type type;
658 event_data data;
659 } event_pollblock;
660 typedef struct
661 {
662 char fonts[256];
663 } font_array;
664 typedef struct
665 {
666 window_block *buffer;
667 char *workfree;
668 char *workend;
669 font_array *font;
670 char *name;
671 unsigned int index;
672 } template_block;
673 typedef struct
674 {
675 wimp_point mul;
676 wimp_point div;
677 } scale_block;
678
679
2
3
4
5
6
7
8
10 os_error *SWI(int numregsin, int numregsout, int swicode, ... );
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
20
24
24
24
24
2
3
4
6
7 extern int *Screen__Ref_mode( void);
8 extern wimp_point *Screen__Ref_size( void);
9 extern wimp_point *Screen__Ref_eig( void);
10 extern wimp_point *Screen__Ref_delta( void);
11 extern int *Screen__Ref_bpp( void);
12
13 0 || ( 1 && ! 1 )
14
14
15
16
17
18
19
20 extern int screen_mode;
21 extern wimp_point screen_size;
22 extern wimp_point screen_eig;
23 extern wimp_point screen_delta;
24 extern int screen_bpp;
25
26 extern unsigned Screen_CacheModeInfo(void);
27
28
26
27 int screen_mode = -1;
28 wimp_point screen_size;
29 wimp_point screen_eig;
30 wimp_point screen_delta;
31 int screen_bpp;
32
33
34 int *Screen__Ref_mode( void) { return &screen_mode; }
35 wimp_point *Screen__Ref_size( void) { return &screen_size; }
36 wimp_point *Screen__Ref_eig( void) { return &screen_eig; }
37 wimp_point *Screen__Ref_delta( void) { return &screen_delta; }
38 int *Screen__Ref_bpp( void) { return &screen_bpp; }
39
40
41
42
43
44
45
46
47 extern unsigned Screen_CacheModeInfo(void)
48 {
49 int oldmode = screen_mode;
50
51 SWI(1, 3, 0x20006 , 135, 0 , 0 , &screen_mode);
52
53 if (oldmode == screen_mode)
54 return( 0 );
55
56 SWI(3, 3, 0x20035, ( -1 ), ( 9 ), 0, 0, 0, ( &screen_bpp )) ;
57 screen_bpp = 1 << screen_bpp;
58
59 SWI(3, 3, 0x20035, ( -1 ), ( 4 ), 0, 0, 0, ( &screen_eig.x )) ;
60 SWI(3, 3, 0x20035, ( -1 ), ( 5 ), 0, 0, 0, ( &screen_eig.y )) ;
61
62 screen_delta.x = 1 << screen_eig.x;
63 screen_delta.y = 1 << screen_eig.y;
64
65 SWI(3, 3, 0x20035, ( -1 ), ( 11 ), 0, 0, 0, ( &screen_size.x )) ;
66 screen_size.x = (screen_size.x + 1) << screen_eig.x;
67
68 SWI(3, 3, 0x20035, ( -1 ), ( 12 ), 0, 0, 0, ( &screen_size.y )) ;
69 screen_size.y = (screen_size.y + 1) << screen_eig.y;
70
71 return( 1 );
72 }
73